def dic_func():
    dic_1 = {'name': '李白'}
    print(f'原字典为{dic_1}')
    # 取值操作
    print(f'name取值为{dic_1['name']}')
    # 添加操作
    dic_1['age'] = 25
    print(f'添加age键值对后字典为{dic_1}')
    # 删除操作
    del dic_1['age']
    print(f'删除age键值对后字典为{dic_1}')
    # 修改操作
    dic_1['name'] = '杜甫'
    print(f'修改name键值对后字典为{dic_1}')
    #统计键值对数量
    print(f'字典中键值对数量为{len(dic_1)}')
    # 遍历字典
    dict_2 = {'name': '苏轼', 'age': 30, 'gender': '男'}
    for key, value in dict_2.items():
        print(f'{key} : {value}')
    # 合并字典
    print(f'原字典为{dic_1}')
    dic_3 = {'height': 170, 'weight': 60}
    dic_1.update(dic_3)
    print(f'合并字典后字典为{dic_1}')
    print('-' * 50)


def tuple_func():
    # 定义元组
    tuple_1 = ('小明',21,180,'小黄')
    # 取值操作
    for i in tuple_1:
        print(f'元组第{tuple_1.index(i)+1}个元素为{i}')
    # 统计计数
    print(f'元组中小明的数量为{tuple_1.count("小明")}')
    # 统计元组中包含元素个数
    print(f'元组中元素个数为{len(tuple_1)}')
    print('-' * 50)

def str_func():
    # 定义字符串
    str_1 = 'abcdefg'
    str_2 = '123456'
    print(f'字符串1为{str_1}是否全部为数学或字母：{str_1.isalnum()}')
    print(f'字符串2为{str_2}是否全部为字母：{str_2.isalpha()}')
    #查找与替换
    print(f'字符串1中cde的位置为{str_1.find("cde")}')
    str_1 = str_1.replace('cde','CDE')
    print(f'字符串1中cde替换为CDE后为{str_1}')
    # 字符串分割连接
    str_3 = 'abc bcd 111'
    print(str_3.split())
    # 字符串分割
    str_4 = 'abc,bcd,111'
    print(str_4.split(','))
    # 字符串换行符分割
    str_5 = 'abc\nbcd\n222'
    print(str_5.splitlines())
    #切片操作
    str_6 = 'abcdefg'
    print(f'字符串6为{str_6}')
    print(f'字符串6从第2个字符开始切片为{str_6[1:4]}')
    print(f'字符串6从第2个字符到末尾切片为{str_6[1:]}')
    print(f'字符串6从第2个字符到倒数第2个字符切片为{str_6[:4]}')
    print(f'字符串6每隔2个字符切片为{str_6[::2]}')
    print(f'字符串6反转切片为{str_6[::-1]}')
    # 统计字符串长度
    print(f'字符串6长度为{len(str_6)}')
    # 统计一个小字符出现次数
    str_7 = 'world worlld'
    print(f'字符or在字符串7中出现的次数为{str_7.count("or")}')
    # 出现位置
    print(f'字符or在字符串7中第一次出现的位置为{str_7.find("or")}')
    print('-'*50)

def set_func():

    # 定义空集合
    set_1 = set()
    # 定义集合
    animals = {'dog', 'cat', 'horse'}
    print(f'集合animals为{animals}')
    # 添加元素
    animals.add('monkey')
    print(f'集合animals添加monkey后为{animals}')
    # 删除元素
    animals.remove('cat')
    print(f'集合animals删除cat后为{animals}')
    # 集合运算
    animals2 = {'cat', 'dog', 'fish'}
    print(f'集合set_2为{animals2}')
    print(f'集合animals和set_2的交集为{animals & animals2}')
    print(f'集合animals和set_2的并集为{animals | animals2}')
    print(f'集合animals和set_2的差集为{animals - animals2}')
    print(f'集合animals和set_2的对称差集为{animals ^ animals2}')
    # 集合长度
    print(f'集合animals长度为{len(animals)}')
    # 更新不同集合中不同元素
    animals.difference_update(animals2)
    print(f'集合animals更新不同集合中不同元素后为{animals}')
    animals.discard('cat')
    print(f'集合animals删除cat后为{animals}')
    print('-'*50)

def func_test(name='缺省函数',age=18):
    #缺省函数
    print(name,age)

if __name__ == '__main__':
    dic_func()
    tuple_func()
    str_func()
    set_func()
    func_test()